<?php
namespace Org\Recour;

class SessionNews {
      private  static   $_seesion_type = array(
      	  'invitation',//邀请的消息
      );
      private static  $_prefix = 'usermsg_';
      private static  $_acount_prefix = 'a_';//如果是使用用户名来保存的话需要加前缀，防止和账号重复

      
      /**
       * 往内存写入推送消息
       * [String] $uid [用户账号，比如用户还没有被注册的时候就已经有它的消息了，这个时候就用的上这个函数]
       * [boolen] $flush [是否清0]
       */
      static function set_msg_for_acount($acount,$name,$flush=false){
      	      SessionNews::set_msg(SessionNews::$_acount_prefix.$acount,$name,$flush);
      }
      
      
	/**
	 * 获取内存推送消息
	 * [String] $uid [用户账号，比如用户还没有被注册的时候就已经有它的消息了，这个时候就用的上这个函数]
	 */
      static  function  get_msg_for_acount($acount){
         return 	SessionNews::get_msg(SessionNews::$_acount_prefix.$acount);
      }
      
	/**
	 * 往内存写入推送消息
	 * [int] $uid [用户ID]
	 * [boolen] $flush [是否清0]
	 */
	static  function set_msg($uid,$name,$flush=false){
		if(!in_array($name,SessionNews::$_seesion_type)){ return;} 
		
		if($flush){ //查看了消息，清零
			$data = S(SessionNews::$_prefix . $uid);
			$data[$name]['total'] = 0;
			$data[$name]['status'] = 0; //1 没有推送 0已经推送
			S(SessionNews::$_prefix . $uid, $data);
			return;
		}
	
		//内存数据已存在时，相应数据+1
		if(S(SessionNews::$_prefix . $uid)){
			$data = S(SessionNews::$_prefix . $uid);
			$data[$name]['total']++;
			$data[$name]['status'] = 1;
			S(SessionNews::$_prefix . $uid, $data);
			//内存数据不存在时，初始化用户数据并写入到内存
		}else{
			$data = array();
			foreach (SessionNews::$_seesion_type as $val){
				$data[$val] = array('total' => 0, 'status' =>0);
			}
			
			$data[$name]['total']++;
			$data[$name]['status'] = 1;
			S(SessionNews::$_prefix . $uid, $data);
		}
	}
	
	/**
	 * 获取内存推送消息
	 * [int] $uid [用户ID]
	 */
	static function get_msg($uid){
		$msg = S(SessionNews::$_prefix.$uid);
		return $msg;
	}
}

?>